package com.tws.common.tool;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 自定义的数据处理类，有如下功能：
 * 1.需要模糊查询的关键字
 * 2.计算分页
 * 3.生成指定格式编号 例：格式“新增年月日 + 当前新增员工的aid  比如: 202110260001，不够的使用0填充”
 * 4.获取指定格式的日期字符串
 * 5.计算两个时间的间隔
 */

public class DataProcessing {
    /**
     * 1.需要用来模糊查询的关键字
     * @param needFuzzyQuery
     * @return 处理好的关键字
     */
    public static String CreatFuzzyQuery(String needFuzzyQuery){
        if(needFuzzyQuery != null && !needFuzzyQuery.equals("") && !needFuzzyQuery.equals("null")){
            return "%"+needFuzzyQuery+"%";
        }
        else return "%%";
    }

    /**
     * 2.计算page
     * @param page
     * @param pageSize
     * @return 计算好的page
     */
    public static Integer CalculatePage(Integer page, Integer pageSize){
        return (page-1)*pageSize;
    }

    /**
     * 3.通过aid生成编号 格式“新增年月日 + 当前新增员工的aid  比如: 202110260001，不够的使用0填充”
     * @param aid
     * @return 编号
     */
    public static String GenerateNumber(Integer aid){
        Date day=new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
        String now =  df.format(day);
        StringBuilder zero = new StringBuilder();
        for(int i = 0; i < 4-aid.toString().length(); i++){
            zero.append("0");
        }
        return now+zero+aid;
    }

    /**
     * 4.获取指定规范的时间格式
     * @param pattern
     * @return 时间
     */
    public static String getFormatTime(String pattern){
        if(pattern == null){pattern = "yyyy-MM-dd HH:mm:ss";} //数据库默认日期格式
        Date day=new Date();
        SimpleDateFormat df = new SimpleDateFormat(pattern);
        return df.format(day);
    }
    public static String getFormatTime(String pattern,String now){
        if(pattern == null){pattern = "yyyy-MM-dd HH:mm:ss";} //数据库默认日期格式
        SimpleDateFormat df = new SimpleDateFormat(pattern);
        Date day = new Date();
        try {
            day=df.parse(now);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return df.format(day);
    }

    /**
     * 5.计算两个时间的间隔
     * @param now
     * @param after
     * @param type
     * @return 时间间隔
     */
    public static Double getDuration(Date now,Date after,char type){
        long duration = now.getTime()-after.getTime();
        double divisor = 0;
        switch (type){
            case 'd': divisor = (1000 * 3600 * 24); break; //天
            case 'h': divisor = (1000 * 3600); break; //时
            case 'm': divisor = 1000 * 60; break; //分
            case 's': divisor = 1000; break; //秒
        }
        return duration/divisor;
    }
}
